package com.moon.back.config;

import cn.hutool.core.util.StrUtil;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;

import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {
    @Autowired
    ApplicationContext ctx;

    @Primary
    @Bean(name = "ds1")
    public DataSource datasource(Environment env) {
        HikariDataSource ds = new HikariDataSource();
        ds.setJdbcUrl(env.getProperty("spring.datasource.url"));
        ds.setUsername(env.getProperty("spring.datasource.username"));
        ds.setPassword(env.getProperty("spring.datasource.password"));
        ds.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
//        String connTimeOut = env.getProperty("spring.datasource.master.connection-timeout");
//        String idleTimeout = env.getProperty("spring.datasource.master.idle-timeout");
//        String maxLifetime = env.getProperty("spring.datasource.master.max-lifetime");
//        String maxPoolSize = env.getProperty("spring.datasource.master.maximum-pool-size");
//        String minIdle = env.getProperty("spring.datasource.master.minimum-idle");
//        if (!StrUtil.isBlank(connTimeOut)){
//            ds.setConnectionTimeout(Long.parseLong(connTimeOut));
//        }
//        if (!StrUtil.isBlank(idleTimeout)){
//            ds.setIdleTimeout(Long.parseLong(idleTimeout));
//        }
//        if (!StrUtil.isBlank(maxLifetime)){
//            ds.setMaxLifetime(Long.parseLong(maxLifetime));
//        }
//        if (!StrUtil.isBlank(maxPoolSize)){
//            ds.setMaximumPoolSize(Integer.parseInt(maxPoolSize));
//        }
//        if(!StrUtil.isBlank(minIdle)){
//            ds.setMinimumIdle(Integer.parseInt(minIdle));
//        }
        System.out.println  ("dataSource is ready!");
        return ds;
    }
}
